package fsmsim.dataStructure;

/**
 * <p>Title: FSMSim</p>
 *  TODO
 * <p>Description: Simulatore di macchine a stati finiti.</p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: Bollati, Donati, Gabrielli, Peli</p>
 *
 * @author Bollati, Donati, Gabrielli, Peli
 * @version 3.0
 */

public class ContainerArray implements Container{
    
     private Element[] data;

    /**
     * Costruttore
     */

    public ContainerArray(int dimension) {
        data = new Element[dimension];
    }
    
    
    /**
     * Restituisce il contenitore 
     * @return
     */
    
    private Element[] getData() {
        return this.data;
    }

    
    /**
     * Aggiunge un elemento nel contenitore
     * @param aElement
     */

    public void addElement(Element aElement) {        
    }
    
    
    /**
     * Aggiunge un elemento nel contenitore in una determinata posizione
     * @param aElement
     * @param position
     */

    public void addElement(Element aElement,int position) {
        this.getData()[position] = aElement;
    }


    /**
     * Elimina un elemento dal contenitore
     * @param aElement
     */

    public void removeElement(Element aElement) {
    }

    
    /**
     * Restituisce gli elementi che fanno matchElement con l'elemento passato
     * @param aElement
     * @return
     */

    public Container searchElement(Element aElement) {
        return null;
    }

    
    /**
     * Preleva un elemento dal contenitore
     * @return
     */

    public Element drawElement() {
        return null;
    }

    
    /**
     * Ritorna l'indice di un elemento presente nel contenitore
     * @param aElement
     * @return
     */

    public int indexOfElement(Element aElement) {
        return -1;
    }

    
    /**
     * Ritorna l'elemento ad un certo indice
     * @param index
     * @return
     */

    public Element getElement(int index) {
        return getData()[index];
    }

    
    /**
     * Ritorna la lunghezza del contenitore
     * @return
     */

    public int size() {
        return getData().length;
    }

    
    /**
     * Metodo toString
     * @return
     */

    @Override
    public String toString() {
        String s = "";
        for (int i = 0; i < getData().length; i++) {
            s += getData()[i].toString() + " ";
        }
        return s;
    }
    
    
    /**
     * Verifica che l'elemento passato è contenuto nel data
     * @param element
     * @return
     */
    
    public boolean containsElement(Element aElement) {
        return false;
    }



}
